// components/puall/puall.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    overheight: {
      type:Number,
      value :220
    },
    msg: {
      type: String,
      default: ''
    },
    height:{
      type:Number,
      value :-1
    },
    pullHeight: {
      type: Number,
      value: 50
    },
    maxHeight: {
      type: Number,
      value: 100
    },
    bottomTips:{
      type: String,
      value: ''
    },
    lowerThreshold:{
      type: Number,
      value: 20
    },
    isTab:{
      type: Boolean,
      value: false
    },
    isAllowPull:{
      type: Boolean,
      value: true
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    upDownTipsHeight:0,//下拉时提示框的高度
    upDownTips:'',//下拉时提示框的文字内容
    startY:0,//第一次点击屏幕的Y坐标
    startX:0,//第一次点击屏幕的X坐标
    distanceY:0,//滑动的距离
    isAllowLoading:false,//下拉释放时是否显示loading样式
    isHeightChange:false,//下拉释放时提示框高度变化是否有动画
    isAllowPullDown:false,//是否触发下拉刷新
    isInterval:false,//防止鼠标或者手指移动时多次执行逻辑判断
  },
  filters:{
    //判断底部提示文字
    judgeBottomTips(type){
      switch (type){
        case 'nomore':
          return '没有更多数据了'
          break;
        case 'loading':
          return '加载中...'
          break;
        case 'more':
          return '上拉加载更多'
          break;
        default:
          break;
      }
    }
  },
  /**
   * 组件的方法列表
   */
  methods: {
    phoneCall(){
      wx.makePhoneCall({
        phoneNumber: '17381912715' 
      })
    },
//鼠标点击
doTouchStart(e){
  console.log('鼠标点击')
  if(!this.data.isAllowPull){
    return;
  }
  this.setData({
    isHeightChange: false,
    isInterval: true,
    startY: e.touches[0].clientY,
    startX: e.touches[0].clientX
  })
},
//鼠标移动
doTouchMove(e){
  console.log('鼠标移动')
  if(!this.data.isAllowPull){
    return;
  }
  //滑动的距离
  this.setData({
    distanceY: e.touches[0].clientY - this.data.startY,
  })
  //只检测一次
  if(this.data.isInterval){
    this.setData({
      isInterval: false,
    })
    //这里判断横向滑动的距离差，主要是为了防止一个页面多个该组件时（横向tab切换）,出现的误操作
    if(Math.abs(this.data.startX-e.touches[0].clientX)>10&&this.data.isTab){
      this.setData({
        isAllowPullDown: false,
      })
    }
    else{
      this.setData({
        isAllowPullDown: true,
      })
    }
  }
  
  //根据横向滑动的距离判断是否触发下拉
  if(!this.data.isAllowPullDown){
    return;
  }
  
  //提示框的高度
  this.setData({
    upDownTipsHeight: this.data.distanceY,
  })
  //根据提示框的高度提示不同的内容
  if(this.data.upDownTipsHeight<=20){
    this.setData({
      upDownTips: "",
    })
  }
  else if(this.data.upDownTipsHeight>20&&this.data.upDownTipsHeight<this.data.pullHeight){
    this.setData({
      upDownTips: "下拉刷新",
    })
  }
  else if(this.data.upDownTipsHeight>=this.data.pullHeight){
    this.setData({
      upDownTips: "松开刷新",
    })
  }
},
//鼠标松开
doTouchEnd(e){
  console.log('鼠标end',this.data.isAllowPull, this.data.upDownTipsHeight, this.data.pullHeight)
  if(!this.data.isAllowPull){
    return;
  }
  if(this.data.upDownTipsHeight>=this.data.pullHeight){
    this.setData({
      upDownTips: "刷新中...",
      isAllowLoading: true,
      currentPage: 1,
      loadingType: "more",
    })
    this.triggerEvent('refresh',1);
  }
  else{
    this.setData({
      distanceY: 0,
      upDownTipsHeight: 0,
      upDownTips: '',
    })
  }
  this.setData({
    isInterval: true,
    isAllowPullDown: false,
    isHeightChange: true,
  })
  // console.log(e.changedTouches[0].clientY);
},
//重置
reSet(){
  if(!this.data.isAllowPull){
    return;
  }
  this.setData({
    isAllowLoading: false,
    upDownTips: '',
    upDownTipsHeight: 0,
    distanceY: 0,
    isInterval: false,
    isAllowPullDown: false
  })
},
loadMore(){
  console.log('触发加载更多')
  this.triggerEvent('loadMore',2);
},
//没有更多
noMore(data){
  this.setData({
    bottomTips: data,
  })
  console.log('设置没有更多',data)
}
  }
})
